package nl.memedefense.monster;

/**
 * Base class for all Monsters. A monster is a graphical component that is drawn on the screen. The main objective of a
 * monster is to reach a certain exit point on the map. A group of monsters is called a Wave.
 */
public abstract class Monster {

    /**
     * Returns the current health of a monster.
     *
     * @return Current health of a monster.
     */
    public abstract float getHealth();

    /**
     * Returns the speed at which this monster travels.
     *
     * @return Float representing the movement speed of the monster. When set to 0 this monster is standing still.
     */
    public abstract float getMovementSpeed();

    /**
     * Returns the way this monster moves. E.g. Walking or flying.
     *
     * @return {@link MovementType} that defines how this monster moves.
     */
    public abstract MovementType getMovementType();

    /**
     * Returns the type of the monster e.g. Normal or Boss.
     *
     * @return {@link MonsterType} type of the monster.
     */
    public abstract MonsterType getMonsterType();



}
